#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Modulos 
import sys, gtk, pygame, utils, objetos, math
from pygame.locals import *

# Constantes

# Clases
# ---------------------------------------------------------------------


class ObjetoGrafico(pygame.sprite.Sprite):
	def __init__(self, path, posInicialx, posInicialy, posFinalx, posFinaly ):
		self.image = utils.load_image(path, True)
		self.rect = self.image.get_rect()

		self.rect.centerx = posInicialx
		self.rect.centery = posInicialy

		self.posInicialx = posInicialx
		self.posInicialy = posInicialy

		self.posFinalx = posFinalx
		self.posFinaly = posFinaly

		self.marcado = False
		self.marca = utils.load_image_fondo('images/clase2_marca.png', (255,255,255))
		self.marca_rect = self.marca.get_rect()
		self.marca_rect.centerx = self.posInicialx
		self.marca_rect.centery = self.posInicialy

	def cambiarEstado(self, screen):
		if (self.marcado == True):
			# desmarcar 
			self.marcado = False
		else:
			# marcar
			self.marcado = True

	def dibujar(self, screen):
		# pintamos la imagen
		screen.blit(self.image, self.rect)
		# si esta marcado debemos pintar la marca

		if (self.marcado == True):
			screen.blit(self.marca, self.marca_rect)

	def colocarPosicionInicial(self):
		self.rect.centerx = self.posInicialx
		self.rect.centery = self.posInicialy
		self.posInicial = True

	def match(self):
		x, y = pygame.mouse.get_pos()
		if abs(self.rect.centerx - x) < 60  and abs(self.rect.centery - y) < 60 :
			return True
		else:
			return False

# ---------------------------------------------------------------------

def ajustarTexto(textoLargo, cantMaxima):
    ret = list()
    seguir = True
		
    while seguir == True:        
	if len(textoLargo) <= cantMaxima:
		texto = textoLargo
		seguir = False
	else:
		texto = textoLargo[0:cantMaxima]
		nro = texto.rfind(" ")
		if nro <= 0 :
			nro = cantMaxima
		texto = texto[0:nro]
		textoLargo = textoLargo[nro:]
	ret.append(texto)

    return ret
		

	
def dibujar(screen,cursor_picture, clock):
    salir = 0
    background_image = utils.load_image('images/fondo2.png')

    #boton de la flecha para continuar
    btn_adelante = objetos.BotonAdelante()
    btn_atras = objetos.BotonAtras()

    #texto superior derecho que indica el numero de clase
    clase2, clase2_rect = utils.texto_clase("Clase 2", 750*utils.RES, 15*utils.RES)

    titulo1, titulo1_rect = utils.texto_subtitulo_azul("AGUA DISPONIBLE PARA EL CONSUMO HUMANO", 350*utils.RES, 45*utils.RES)
    titulo2, titulo2_rect = utils.texto_subtitulo_azul("......................................................", 350*utils.RES, 58*utils.RES)


    textosLargos = list()
    textosLargos.append('''Uno de los chicos, de aquí abajo, tiene el botellón que muestra la proporción correcta de agua potable en relación a todo el agua del planeta. ¿Te animás a descubrirlo?. Las Pistas son:''')
    textosLargos.append(''' - El botellón correcto no lo tiene una persona con lentes.''')
    textosLargos.append(''' - Tampoco lo tiene una persona con pelo enrulado.''')
    textosLargos.append(''' - La persona que tiene el botellón es un año menor a los otros cinco.''')

    lineas = list()
    lineas_rect = list()
    i = 0

    for textoLargo in textosLargos:
	    vector = ajustarTexto(textoLargo, 100)

	    for texto in vector:
		i= i + 1
	        a, b = utils.texto_normal(texto, 	380*utils.RES,  (55+(i*25))*utils.RES,  (0, 0, 0), 18 )
	        lineas.append(a)
	        lineas_rect.append(b)


    botella_a = ObjetoGrafico('images/clase2_botella_a.png', 180*utils.RES,280*utils.RES, 0*utils.RES,0*utils.RES)
    botella_b = ObjetoGrafico('images/clase2_botella_b.png', 350*utils.RES,280*utils.RES, 0*utils.RES,0*utils.RES)
    botella_c = ObjetoGrafico('images/clase2_botella_c.png', 520*utils.RES,280*utils.RES, 0*utils.RES,0*utils.RES)

    botella_d = ObjetoGrafico('images/clase2_botella_d.png', 240*utils.RES,420*utils.RES, 0*utils.RES,0*utils.RES)
    botella_e = ObjetoGrafico('images/clase2_botella_e.png', 390*utils.RES,420*utils.RES, 0*utils.RES,0*utils.RES)
    botella_f = ObjetoGrafico('images/clase2_botella_f.png', 540*utils.RES,420*utils.RES, 0*utils.RES,0*utils.RES)

    ok, okrec =  utils.textotlb("CORRECTO!!!", 670*utils.RES, 300*utils.RES, 25 , (255, 0, 0))

    while salir == 0:
    
    	# Pump GTK messages.
		while gtk.events_pending():
			gtk.main_iteration()
			
		for eventos in pygame.event.get():
			if eventos.type == QUIT:
				sys.exit(0)
			elif eventos.type == pygame.VIDEORESIZE:
			   pygame.display.set_mode(eventos.size, pygame.RESIZABLE)	
			elif eventos.type == MOUSEBUTTONDOWN:
				mx, my = pygame.mouse.get_pos()
				if btn_adelante.rect.collidepoint(mx, my):
					salir = 6
					btn_adelante.sonido.play()	
				elif btn_atras.rect.collidepoint(mx, my):
					salir = 4
					btn_atras.sonido.play()	

				if botella_a.match() == True:
					botella_a.cambiarEstado(screen)

				if botella_b.match() == True:
					botella_b.cambiarEstado(screen)

				if botella_c.match() == True:
					botella_c.cambiarEstado(screen)

				if botella_d.match() == True:
					botella_d.cambiarEstado(screen)

				if botella_e.match() == True:
					botella_e.cambiarEstado(screen)

				if botella_f.match() == True:
					botella_f.cambiarEstado(screen)

		# Realiza la animacion del texto	
		screen.blit(background_image, (0, 0))
		screen.blit(clase2, clase2_rect)

		screen.blit(titulo1, titulo1_rect)
		screen.blit(titulo2, titulo2_rect)

		for i in range(0, len(lineas)):
			screen.blit(lineas[i],lineas_rect[i])

		botella_a.dibujar(screen)
		botella_b.dibujar(screen)
		botella_c.dibujar(screen)
		botella_d.dibujar(screen)
		botella_e.dibujar(screen)
		botella_f.dibujar(screen)

		#Chequear
		if botella_a.marcado == True and botella_b.marcado == True and botella_c.marcado == True and botella_d.marcado == True and botella_e.marcado == False and botella_f.marcado == True :
			screen.blit(ok, okrec)
			

		screen.blit(btn_adelante.image, btn_adelante.rect)
		screen.blit(btn_atras.image, btn_atras.rect)
		screen.blit(cursor_picture, pygame.mouse.get_pos())
		pygame.display.flip()

		# Try to stay at 30 FPS
		clock.tick(30)
                	 
    return salir


# This function is called when the game is run directly from the command line:
# ./TestGame.py 
def main():
	
	pygame.init()
	screen = pygame.display.set_mode((int(800*utils.RES), int(520*utils.RES)), pygame.RESIZABLE) #pygame.display.get_surface() #

	# Fake a Sugar cursor for the pyGame canvas area
	pygame.mouse.set_cursor((8,8),(0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0))
	cursor_picture = pygame.image.load('images/standardcursor.png')
	cursor_picture.convert_alpha() 
	clock = pygame.time.Clock()
	dibujar(screen,cursor_picture,clock)
 
if __name__ == '__main__':
   main()
